/*
    第十六天错题

    夏思成

    2024年3月15日
*/

#include <stdio.h>
#include <math.h>

//1.
//浮点型数据不可以直接比较大小，需要借助两者的差值的绝对值来比较，如果两者差值的绝对值近似为0，则就说明两者相等
//float型数据一般只能精确到小数点后6位即1e-6；double的精确误差在1e-15；
//有了这些，还需要fabs和fabsf这个函数来实现浮点型间的大小比较
//fabsf函数的作用为返回float型的绝对值，参数及返回值都是float
//fabs函数的作用为返回double型的绝对值，参数及返回值都是double
//使用fabs和fabsf得包含对应的头文件，math.h
//例：
int main()
{
    float a = 1.345;
    float b = 1.345;
    
    //想判断a与b是否相等，我们只需要判断两者差值的绝对值时候小于float型的精确误差即可
    if (fabsf(a - b) < 1e-6)
    {
        printf("%f和%f相等", a, b);
    }
    return 0;
}

//2.该程序会出现什么错误

//数组越界，A[255]指的是第256个元素，而该数组只有255个元素，故会导致数组越界
//死循环，i是一个无符号的字符变量，它的取值是0到255，所以i永远也不可能超过255，程序陷入死循环
#define MAX 255
int main()
{
    unsigned char A[MAX], i;
    for (i = 0; i <= MAX; i++)
        A[i] = i;
    return 0;
}